/*
  *编写一个程序，分别使用字节流与字符流拷贝一个文本文件。要求如下：
  *a使用FileInputStream、FileOutputStream和FileReader、FileWriter分别进行拷贝。
  *b使用字节流拷贝时，定义一个1024字节的数组作为缓冲区。
  *c使用字符流拷贝时，使用BufferedReader和BufferedWriter包装流进行包装。 
 */

package cn.edu.lcu.cs.javateaching.io;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
//import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;;

/**
 * <ul>
 * <li>缩进乱七八糟</li>
 * <li>变量命名不规范：单字符、大小写、不合理的缩写简写</li>
 * <li>类名不规范：见名知意</li>
 * </ul>
 * @author 某学生
 *
 */
public class DATI_4 
{
public static void main(String[] args)  
{       FileInputStream A=null;
        FileOutputStream B=null;
	try {
		 A=new FileInputStream("a.txt");/*此处运用的相对路径，运用的.txt文件已经压缩，也可以自行创建。还可以根据情况自行修改为绝对路径*/
		 B=new FileOutputStream("b.txt");/*此处运用的相对路径，运用的.txt文件已经压缩，也可以自行创建。还可以根据情况自行修改为绝对路径*/
		byte[] bys=new byte[1024];/*定义一个1024字节的数组作为缓冲区*/
		int i;
		while((i=A.read())!=-1)
		{
			B.write(i);
		}	

	} catch (IOException e) {
		
		e.printStackTrace();
	}finally 
	{  if(A!=null) 
	{
		try {
			A.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
		if(B!=null) 
		{
			try {
			B.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
		}	
	}
/*---------------------------------------------------------------------*/
	BufferedReader C=null;
	BufferedWriter D=null;
	try {
		  C= new BufferedReader(new FileReader("c.txt"));/*此处运用的相对路径，运用的.txt文件已经压缩，也可以自行创建。还可以根据情况自行修改为绝对路径*/

		  D= new BufferedWriter(new FileWriter("d.txt"));/*此处运用的相对路径，运用的.txt文件已经压缩，也可以自行创建。还可以根据情况自行修改为绝对路径*/
		
		String E;
		while ((E=C.readLine())!=null)
		{
			D.write(E);
			D.newLine();/*可以读取回车换行符*/
		}
		C.close();
		D.close();
	
	} catch (IOException e) {
		
		e.printStackTrace();
	}finally 
	{  if(C!=null) 
	{
		try {
			C.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
		if(D!=null) 
		{
			try {
			D.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
		}	
	}
	
}
}
